import allure
from selenium.webdriver.common.by import By

from Base.BackBase.baseBack import BasePage, BaseHandle


# 后台登录页面对象库层
class LoginPage(BasePage):
    def __init__(self):
        super().__init__()
        # 用户名
        self.username = By.CSS_SELECTOR, "[name='username']"
        # 密码
        self.password = By.CSS_SELECTOR, "[name='password']"
        # 登录
        self.login_button = By.CSS_SELECTOR, "[class='input_sub']"

    # 定位用户名
    def find_username(self):
        return self.get_element(self.username)

    #     定位密码
    def find_password(self):
        return self.get_element(self.password)

    #       定位登录按钮
    def find_login_button(self):
        return self.get_element(self.login_button)


# 后台登录页面操作层
class LoginHandle(BaseHandle):
    def __init__(self):
        self.login_page = LoginPage()

    #   输入用户名
    @allure.step(title="输入用户名")
    def send_username(self, username):
        self.input_text(self.login_page.find_username(), username)

    #   输入密码
    @allure.step(title="输入密码")
    def senf_password(self, password):
        self.input_text(self.login_page.find_password(), password)

    #   点击登录
    @allure.step(title="点击登录")
    def click_login_button(self):
        # 没有输入验证码  登录按钮的状态是不可点击的状态  通过js的代码将disabled的属性移除  这样就可以点击登录按钮了
        js = "document.getElementById('inp1').removeAttribute('disabled') "
        self.login_page.back_driver.execute_script(js)
        self.login_page.find_login_button().click()


# 后台登录页面业务层
class LoginProxy:
    def __init__(self):
        self.login_handle = LoginHandle()

    #     登录操作
    def go_login(self, username, password):
        self.login_handle.send_username(username)
        self.login_handle.senf_password(password)
        self.login_handle.click_login_button()
